/* GCW 02/03/94 */
/* return index at which substring b first occurs in string a, after
   index i, or -1 if no occurrence */

#ifndef _string_instr
#define _string_instr 1
#endif

instr(a,b,i)
{
 local a_l,b_l,j,k;
 a_l = sizeof(a);
 b_l = sizeof(b);
 if ( b_l == 0 ) return(i);
 if ( a_l < (b_l + i) ) return(-1);
 repeat
  {
   j = 0;
   while ( (i < a_l) && (a[i] != b[j]) ) i++;
   k = i;
   while ( (i < a_l) && (j < b_l) && (a[i] == b[j]) ) 
       { j++; i++;}
  }
 while ( (j < b_l) && (i < a_l) );
 return (j == b_l)?k:(-1);
}
